"""
管理员权限工具
- 在 Windows 环境下检测/请求以管理员权限运行当前进程。
"""
from typing import Optional
import ctypes
import sys


class AdminUtils:
    """管理员权限工具类"""

    @staticmethod
    def is_admin() -> bool:
        """检查当前是否以管理员权限运行"""
        try:
            return bool(ctypes.windll.shell32.IsUserAnAdmin())
        except Exception:
            return False

    @staticmethod
    def require_admin() -> None:
        """
        要求以管理员权限运行，如果不是则自动请求提升权限
        """
        if not AdminUtils.is_admin():
            ctypes.windll.shell32.ShellExecuteW(
                None, "runas", sys.executable, " ".join(sys.argv), None, 1
            )
            sys.exit()
